package E_2024;

import java.util.Arrays;

/*
    题目描述
        给定一个字符串，只包含大写字母，求在包含同一字母的子串中，长度第 k 长的子串的长度，相同字母只取最长的那个子串。
    输入描述
        第一行有一个子串(1<长度<=100)，只包含大写字母。
        第二行为 k的值
    输出描述
        输出连续出现次数第k多的字母的次数。
    用例
        输入
            AAAAHHHBBCDHHHH
            3
        输出
            2
        说明
            同一字母连续出现的最多的是A和H，四次；
 */
public class E_100_18 {
    public static void main(String[] args) {
        System.out.println(ans("AAAAAHHHHHBBCDHHH",3));
    }
    public static int ans(String str, int index){
        // 统计次数
        int[] times = new int[101];
        // 记录某字符出现最多的次数，小于的不做统计
        int[] chs = new int[26];
        int ch = str.charAt(0);
        int nums = 1; // 统计出现次数
        for (int i = 1; i < str.length(); i++) {
            int temp = str.charAt(i);
            if (temp == ch) nums++;
            else {
                // 比较字符出现次数
                if (nums < chs[ch-'A']) continue;
                times[nums]++;
                times[chs[ch-'A']]--;
                chs[ch-'A'] = nums;
                nums = 1;
                ch = temp;
            }
        }
        if (nums > chs[ch-'A']) {
            times[nums]++;
            times[chs[ch - 'A']]--;
        }
        System.out.println(Arrays.toString(times));
        System.out.println(Arrays.toString(chs));
        while (times[index] == 0) index++;
        return times[index];
    }
}
